package it.apiconsulting.live.view;

import it.apiconsulting.live.controller.ClienteManager;
import it.apiconsulting.live.controller.NoleggioManager;
import it.apiconsulting.live.controller.ProdottoManager;
import it.apiconsulting.live.model.Cliente;
import it.apiconsulting.live.model.Noleggio;
import it.apiconsulting.live.model.Prodotto;

import java.util.ArrayList;
import java.util.List;


public class NoleggioAction extends BaseAction {

	private static final long serialVersionUID = 9149826260758390091L;
	private Noleggio noleggio;
	private List<Noleggio> noleggi;
	private String id;

	private List<Prodotto> prodotti;
	private List<Cliente> clienti;
	
	private List<Prodotto> prodottiNoleggiati;
	
	private NoleggioManager linkNoleggioController;
	private ProdottoManager linkProdottoController;
	private ClienteManager linkClienteController;

	public NoleggioAction() {
		linkNoleggioController = new NoleggioManager();
		linkProdottoController = new ProdottoManager();
		linkClienteController = new ClienteManager();
		function = "Noleggio";
	}

	public String execute() {
		this.noleggi = linkNoleggioController.list();
		this.prodotti = linkProdottoController.distinctList();
		this.clienti = linkClienteController.list();
		this.prodottiNoleggiati = new ArrayList<Prodotto>();
		return SUCCESS;
	}

	public String add() {
		System.out.println(getNoleggio());
		try {
			linkNoleggioController.add(getNoleggio());
		} catch (Exception e) {
			e.printStackTrace();
		}
		this.noleggi = linkNoleggioController.list();
		return SUCCESS;
	}
	
	public String addElemNoleggio() {
		System.out.println(getNoleggio());
		this.prodottiNoleggiati = new ArrayList<Prodotto>();
		try {
			/*Liste di default*/
			this.noleggi = linkNoleggioController.list();
			this.prodotti = linkProdottoController.distinctList();
			this.clienti = linkClienteController.list();
			
			/*List prodotti noleggiati*/
			Prodotto prodottoNoleggiato = new Prodotto();
			prodottoNoleggiato.setId(getNoleggio().getIdprodotto());
			prodottoNoleggiato.setQty(getNoleggio().getQty());
			prodottiNoleggiati.add(prodottoNoleggiato);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return SUCCESS;
	}

	public String delete() {
		linkNoleggioController.delete(Long.parseLong(getId()));
		return SUCCESS;
	}

	public Noleggio getNoleggio() {
		return noleggio;
	}

	public List<Noleggio> getNoleggi() {
		return noleggi;
	}

	public void setNoleggio(Noleggio noleggio) {
		this.noleggio = noleggio;
	}

	public void setNoleggi(List<Noleggio> noleggi) {
		this.noleggi = noleggi;
	}
	
	public List<Prodotto> getProdotti() {
		return prodotti;
	}

	public void setProdotti(List<Prodotto> prodotti) {
		this.prodotti = prodotti;
	}

	public List<Cliente> getClienti() {
		return clienti;
	}

	public void setClienti(List<Cliente> clienti) {
		this.clienti = clienti;
	}

	public List<Prodotto> getProdottiNoleggiati() {
		return prodottiNoleggiati;
	}

	public void setProdottiNoleggiati(List<Prodotto> prodottiNoleggiati) {
		this.prodottiNoleggiati = prodottiNoleggiati;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}
}
